import {Message} from "element-ui";
import {DateUtil} from "./DateUtil";

/**
 * 通用服务类
 */
export const Assert =  class Assert {
    static assert = null

    static getInstance() {
        if (this.assert == null) {
            this.assert = new Assert()
        }
        return this.assert
    }

    //校验的方法
    static isNotNull(value, message) {
        if (value === null || value === '' || value === undefined) {
            if (message != null && message != '') {
                Message.warning({
                    message: message,
                    duration: 1000
                })
            }
            return false
        } else {
            return true
        }
    }

    /**
     * 验证数字是否小于0
     * @param value
     * @param message
     * @returns {boolean}
     */
    static isLessZero(value, message) {
        if (value === null || Number.parseInt(value) < 0 || value === undefined) {
            Message.warning({
                message: message,
                duration: 1000
            })
            return false
        } else {
            return true
        }
    }

    /**
     * 校验手机号
     * @param value
     */
    static validPhone(value) {
        if (!/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/.test(value)) {
            Message.warning({
                message: '请输入正确的手机号',
                duration: 1000
            })
            return false
        }
        return true
    }

    /**
     * 校验身份证
     * @param value
     */
    static validIdCard(value) {
        if (!/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(value)) {
            Message.warning({
                message:'请输入正确的身份证号',
                duration:1000
            })
            return false
        }
        return true
    }

    /**
     * 校验日期
     * @param value
     */
    static validDate(value) {
        return new Date(value).getTime() <= new Date(DateUtil.today()).getTime();
    }

    /**
     * 校验日期时间
     * @param value
     */
    static validDateTime(value) {
        return new Date(value).getTime() <= new Date(DateUtil.now()).getTime();
    }
}
